home *** CD-ROM | disk | FTP | other *** search
/ MacAdvocate 2 / apple-mac-advocate-ii-fall-1997.iso / mac / MacOS / Helpful Hints and FAQs / Apple Tech Info Library / Mac Meaning of Sad Mac Codes < prev    next >
Encoding:
Text File  |  1996-12-02  |  15.3 KB  |  351 lines  |  [TEXT/ttxt]

  1. Revised:       9/26/96
  2. Security:      Everyone
  3.  
  4. Macintosh: "Sad Mac" Error Code Meaning (11/95)
  5.  
  6. ======================================================================
  7.  
  8. Article Created: 2 July 1991
  9. Article Reviewed/Updated: 20 November 1995
  10.  
  11. TOPIC -----------------------------------------------------------
  12.  
  13. When I turn on my Macintosh, I get a black screen with a "sad Macintosh" face and the numbers 020016. There is no listing for this error code in any of my manuals. What does it mean?
  14.  
  15. DISCUSSION ------------------------------------------------------
  16.  
  17. The particular error code that appears with the "sad Macintosh" is not as important as WHEN it occurs. If the Macintosh can start up from a different system diskette, then the problem is probably with the system software on the other disk. System problems are usually identified when you get a "happy Macintosh" face and the "Welcome to Macintosh" screen before the "sad Macintosh."
  18.  
  19. If the "sad Macintosh" face appears immediately at power up, that usually suggests an issue with the logic board or memory. Try starting up from a floppy disk before assuming it's a hardware problem.
  20.  
  21.  
  22. Sad Mac Error Codes Description
  23. ===============================
  24.  
  25. On the Original ROMs (Macintosh 128k, 512k, 512ke, Plus):
  26. ---------------------------------------------------------
  27. When you press the interrupt button on the side of your Macintosh when starting up, you should get a sad Mac icon with '0F000D' and some bits cycling under the icon indicating it is performing a memory test.
  28.  
  29. This numeric code is in two parts:
  30. • The first two characters are the class code. The class code tells what
  31.   part of the diagnostic program found the error.
  32. • The second four are the sub code. The sub class code tells what the error
  33.   was. In the case of a bad RAM chip, the sub class identifies the bad chip
  34.   (this was very helpful to homegrown upgraders).
  35.  
  36. Begin_Table
  37.  
  38. Class Code                             Sub Code
  39. ----------                             --------
  40. 1 = ROM test failed                    Meaningless
  41. 2 = Memory test - bus subtest          identifies bad chips
  42. 3 = Memory test - byte write           identifies bad chips
  43. 4 = Memory test - Mod3 test            identifies bad chips
  44. 5 = Memory test - address uniqueness   identifies bad chips
  45.  
  46.  
  47. Single Chip Identification
  48.  
  49. Data Bit    Location   Sub Code Bits
  50. --------    --------   -------------
  51.  0             F5           0001
  52.  1             F6           0002
  53.  2             F7           0004
  54.  3             F8           0008
  55.  4             F9           0010
  56.  5             F10          0020
  57.  6             F11          0040
  58.  7             F12          0080
  59.  8             G5           0100
  60.  9             G6           0200
  61. 10             G7           0400
  62. 11             G8           0800
  63. 12             G9           1000
  64. 13             G10          2000
  65. 14             G11          4000
  66. 15             G12          8000
  67.  
  68.  
  69. Class Code      Sub Code
  70. ----------      --------
  71. F = Exception   0001 Bus error
  72.                 0002 Address error
  73.                 0003 Illegal instruction
  74.                 0004 Zero divide
  75.                 0005 Check instruction
  76.                 0006 Traps instruction
  77.                 0007 Privilege violation
  78.                 0008 Trace
  79.                 0009 Line 1010
  80.                 000A Line 1111
  81.                 000B Other exception
  82.                 000C Nothing
  83.                 000D NMI (normal indication)
  84.                 0064 Couldn’t Read System File into Memory
  85.  
  86.  
  87. Macintosh SE & Macintosh II ROMs:
  88. ---------------------------------
  89. The Sad Mac error codes have been changed to incorporate additional power for testing and to support the 32-bit world. Generally, the same codes are used for 68000 exceptions as the Macintosh, however they are displayed differently.
  90.  
  91. The traditional Macintosh error codes are displayed like this:
  92.  
  93.                 0F0003
  94.  
  95. Where “F” indicates an exception occurred, and “3” indicates an illegal instruction occurred. On the Macintosh SE and II, the display would appear:
  96.  
  97.                 0000000F
  98.                 00000003
  99.  
  100.      *Please note that 00000003 is a hex number.*
  101.  
  102. The new power–on error codes have the following format:
  103.  
  104.                 XXXXYYYY
  105.                 ZZZZZZZZ
  106.  
  107. Where XXXX is internal test manager state information (ignore this), YYYY contains codes that indicate either an exception code, or the test number for a power on test failure. The ZZZZZZZZ code contains additional failure information to help track down the problem.
  108.  
  109. YYYY Error Codes:
  110. -----------------
  111.  
  112. $0001   The ROM checksum test failed. Ignore the Z field.
  113.  
  114. $0002   The first small chunk of RAM to be tested failed. The Z field
  115.         indicates which RAM Bit(s) failed. This small chunk of RAM is
  116.         always in Bank B.
  117.  
  118.         Example:   $AABBCCDD
  119.                    AA=8 bit mask for bits 31-24
  120.                    BB=8 bit mask for bits 23-16
  121.                    CC=8 bit mask for bits 15-8
  122.                    DD=8 bit mask for bits 7-0
  123.  
  124. $0003   The RAM test failed while testing bank B, after passing the chunk
  125.         tested for code $0002. The Z field indicates which bits failed as
  126.         in code $0002.
  127. $0004   The RAM test failed while testing bank A. The Z field indicates
  128.         which  bits failed as in code $0002.
  129. $0005   The RAM External addressing test failed. The Z field indicates a
  130.         failed address line.
  131. $0006   Unable to properly address the VIA1 chip. The Z field is not
  132.         applicable.
  133. $0007   Unable to properly address the VIA2 chip (Macintosh II only). The Z
  134.         field is not applicable.
  135. $0008   Unable to properly access the Front Desk Bus. The Z field is not
  136.         applicable.
  137. $0009   Unable to properly access the MMU. The Z field is not applicable.
  138. $000A   Unable to properly access NuBus. The Z field is not applicable.
  139. $000B   Unable to properly access the SCSI Chip. The Z field is not
  140.         applicable.
  141. $000C   Unable to properly access the IWM chip. The Z field is not
  142.         applicable.
  143. $000D   Unable to properly access the SCC Chip. The Z field is not
  144.         applicable.
  145. $000E   Failed Data Bus test. The Z field indicated the bad bit(s) as a
  146.         32-bit mask for bits 0-31. This may indicate either a bad SIMM or
  147.         data bus failure.
  148. $000F   Reserved for Macintosh compatibility.
  149.  
  150. $FFxx   A 680xx exception occurred during power on testing.
  151.         The xx indicates the exception:
  152.  
  153.         $01 — Bus Error
  154.         $02 — Address Error
  155.         $03 — Illegal Instruction Error
  156.         $04 — Zero Divide
  157.         $05 — Check Instruction
  158.         $06 — cpTrapCC, Trap CC, Trap V
  159.         $07 — Privilege violation
  160.         $08 — Trace
  161.         $09 — Line A
  162.         $0A — Line F
  163.         $0B — unassigned
  164.         $0C — CP protocol violation
  165.         $0D — Format exception
  166.         $0E — Spurious interrupt
  167.         $0F — Trap 0–15 exception
  168.         $10 — Interrupt Level 1
  169.         $11 — Interrupt Level 2
  170.         $12 — Interrupt Level 3
  171.         $13 — Interrupt Level 4
  172.         $14 — Interrupt Level 5
  173.         $15 — Interrupt Level 6
  174.         $16 — Interrupt Level 7
  175.         $17 — FPCP bra or set on unordered condition
  176.         $18 — FPCP inexact result
  177.         $19 — FPCP divide by zero
  178.         $1A — FPCP underflow
  179.         $1B — FPCP operand error
  180.         $1C — FPCP overflow
  181.         $1D — FPCP signalling NAN
  182.         $1E — PMMU configuration
  183.         $1F — PMMU illegal operation
  184.         $20 — PMMU access level violation
  185.  
  186.  
  187. Macintosh Portable ROMs:
  188. ------------------------
  189. The bootup code in the Macintosh Portable contains a series of startup tests that are run to ensure that the fundamental operations of the machine are working properly. If any of those tests fail, a Sad Mac icon appears on the screen with a code below that describes what failure occurred. Here is a typical example of a Sad Mac display with an error code below it:
  190.  
  191.                          SAD MAC CODE
  192.  
  193.                      05460203   =   (D7.L)
  194.                      000OB6DB   =   (D6.L)
  195.  
  196. The two codes are actually the contents of the two CPU data registers D6 and D7. The upper word (upper 4 hex digits, in this case 0546) of D7 contains miscellaneous flags that are used by the start-up test routines and are unimportant to just about everybody except a few test engineers within Apple. The lower word of D7 is the major error code. The major error code identifies the general area the test routines were in when a failure occurred. D6 is the minor error and usually contains additional information about the failure, something like a failed bit mask.
  197.  
  198.                      SAD MAC CODE BROKEN DOWN
  199.  
  200.                      Test Flags    Major Error
  201.                      ----------    -----------
  202.                      0546          0203
  203.  
  204.                      Minor Error   Minor Error
  205.                      -----------   -----------
  206.                      0000          B6DB
  207.  
  208. The major error is further broken into the upper byte that contains the number of any 68000 exception that occurred ($00 meaning that no exception occurred), and the lower byte that usually contains the test that was being run at the time of failure. If an unexpected exception occurred during a particular test, then the exception number is logically ORed into the major error code. This way both the exception that occurred as well as the test that was running can be decoded from the major error code:
  209.  
  210.                     SAD MAC CODE FURTHER BROKEN DOWN
  211.  
  212.                      68000 Exception    Test Code
  213.                      ---------------    -----------
  214.                      02                  03
  215.  
  216. In this example, the code says that an address error exception ($0200) occurred during the RAM test for Bank A ($03); $0200 ORed with $03 = $0203.
  217.  
  218. Major Error Codes
  219. -----------------
  220. Below is a brief description of the various test codes that might appear in the major error code:
  221.  
  222.  **Warning**: Some of these codes may mean slightly different things in Macintosh models other than the Macintosh Portable. These descriptions describe specifically how they are used in the Macintosh Portable.
  223.  
  224. $01   - ROM test failed. Minor error code is $FFFF, means nothing.
  225. $02   - RAM test failed. Minor error code indicates which RAM bits failed.
  226. $05   - RAM external addressing test failed. Minor error code indicates a
  227.         failed address line.
  228. $06   - Unable to properly access the VIA 1 chip during VIA
  229.         initialization. Minor error code not applicable.
  230. $08   - Data bus test at location eight bytes off of top of memory failed.
  231.         Minor error code indicates the bad bits as a 16–bit mask for bits
  232.         15–00.
  233.         This may indicate either a bad RAM chip or data bus failure.
  234. $0B  -  Unable to properly access the SCSI chip. Minor error code not
  235.         applicable.
  236. $0C  -  Unable to properly access the IWM (or SWIM) chip. Minor error code
  237.         not applicable.
  238. $0D  -  Not applicable to Macintosh Portable. Unable to properly access the
  239.         SCC chip.
  240.         Minor error code not applicable.
  241. $0E  -  Data bus test at location $0 failed. Minor error code indicates
  242.         the bad bits as a 16–bit mask for bits 15–00. This may indicate
  243.         either a bad RAM chip or data bus failure.
  244. $10  -  Video RAM test failed. Minor error code indicates which RAM bits
  245.         failed.
  246. $11  -  Video RAM addressing test failed. Minor error code contains the
  247.         following:        upper word    =       failed address (16-bit)
  248.                    msb of lower word    =       data written
  249.                    lsb of lower word    =       data read
  250.         Data value written also indicates which address line is being
  251.         actively tested.
  252. $12  -  Deleted
  253. $13  -  Deleted
  254. $14  -  Power Manager processor was unable to turn on all the power to the
  255.         board. This may have been due to a communication problem with the
  256.         Power Manager. If so, the minor error code contains a Power Manager
  257.         error code, explained in the next section.
  258. $15  -  Power Manager failed its self-test. Minor error code contains the
  259.         following:   msw  = error status of transmission to power manager.
  260.                      lsw  = Power Manager self-test results (0 means it
  261.                             passed, non-zero means it failed)
  262. $16  -  A failure occurred while trying to size and configure the RAM.
  263.         Minor error code not applicable.
  264.  
  265. Minor error codes—Power Manager Processor Failures
  266. --------------------------------------------------
  267. If a communication problem occurs during communication with the Power Manager, the following error codes will appear somewhere in the minor error code (usually in the lower half of the code, but not always):
  268.  
  269.       $CD38   Power Manager was never ready to start handshake.
  270.       $CD37   Timed out waiting for reply to initial handshake.
  271.       $CD36   During a send, Power Manager did not start a handshake.
  272.       $CD35   During a send, Power Manager did not finish a handshake.
  273.       $CD34   During a receive, Power Manager did not start a handshake.
  274.       $CD33   During a receive, Power Manager did not finish a handshake.
  275.  
  276. Diagnostic Code Summary
  277. -----------------------
  278. Below is a summarized version of the Sad Mac error codes:
  279.  
  280. Test Codes
  281.       $01     ROM checksum test.
  282.       $02     RAM test.
  283.       $05     RAM addressing test.
  284.       $06     VIA 1 chip access.
  285.       $08     Data bus test at top of memory.
  286.       $0B     SCSI chip access.
  287.       $0C     IWM (or SWIM) chip access.
  288.       $0D     Not applicable to Macintosh Portable. SCC chip access.
  289.       $0E     Data bus test at location $0.
  290.       $10     Video RAM test.
  291.       $11     Video RAM addressing test.
  292.       $14     Power Manager board power on.
  293.       $15     Power Manager self-test.
  294.       $16     RAM sizing.
  295.  
  296.  
  297. Power Manager Communication Error Codes
  298. ---------------------------------------
  299.       $CD38   Initial handshake.
  300.       $CD37   No reply to initial handshake.
  301.       $CD36   During send, no start of a handshake.
  302.       $CD35   During a send, no finish of a handshake.
  303.       $CD34   During a receive, no start of a handshake.
  304.       $CD33   During a receive, no finish of a handshake.
  305.  
  306.  
  307. CPU Exception Codes (as used by the startup tests)
  308. --------------------------------------------------
  309.       $0100   Bus error exception code
  310.       $0200   Address error exception code
  311.       $0300   Illegal error exception code
  312.       $0400   Zero divide error exception code
  313.       $0500   Check inst error exception code
  314.       $0600   cpTrapcc,Trapcc,TrapV exception code
  315.       $0700   Privilege violation exception code
  316.       $0800   Trace exception code
  317.       $0900   Line A exception code
  318.       $0A00   Line F exception code
  319.       $0B00   Unassigned exception code
  320.       $0C00   CP protocol violation
  321.       $0D00   Format exception
  322.       $0E00   Spurious interrupt exception code
  323.       $0F00   Trap inst exception code
  324.       $1000   Interrupt level 1
  325.       $1100   Interrupt level 2
  326.       $1200   Interrupt level 3
  327.       $1300   Interrupt level 4
  328.       $1400   Interrupt level 5
  329.       $1500   Interrupt level 6
  330.       $1600   Interrupt level 7
  331.  
  332. End_Table
  333.  
  334. Article Change History
  335. ----------------------
  336. 20 Nov 1995 - Added new keyword and reviewed article for technical accuracy.
  337. 14 Aug 1995 - Added Internet table formatting convention.
  338. 01 Aug 1994 - Converted enclosed binary file to text and added to article.
  339. 20 May 1992 - Reviewed for technical accuracy.
  340.  
  341. Support Information Services
  342.  
  343. Copyright 1991-95, Apple Computer, Inc.
  344.  
  345. ======================================================================
  346.  
  347. Created:       7/2/91
  348. Author:        AH
  349. Source:        TOPS
  350. Library:       TECHINFO
  351. Article ID:    TECHINFO-0007748